package com.whfc.fuum.dao;


import com.whfc.entity.dto.Apply.rep.QueryEmpSysIdDto;
import com.whfc.entity.dto.msg.AppMsgToUserDTO;
import com.whfc.fuum.dto.SysUserDTO;
import com.whfc.fuum.entity.SysUser;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface SysUserMapper {

    int deleteByPrimaryKey(Integer id);

    int insertSelective(SysUser record);

    SysUser selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(SysUser record);

    int updateByPrimaryKey(SysUser record);


    /**
     * 根据账号查找用户
     *
     * @param username
     * @return
     */
    SysUser selectByUsername(String username);

    /**
     * 根据手机号查询用户
     *
     * @param phone
     * @return
     */
    SysUser selectByPhone(@Param("phone") String phone);


    /**
     * 查询可以导入的人员
     *
     * @param userIdList 需要排除的人员ID
     * @param keyword    搜索关键字
     * @return 人员列表
     */
    List<SysUserDTO> selectImportUserList(@Param("userIdList") List<Integer> userIdList, @Param("keyword") String keyword);

    /**
     * 查询可供选择的接收消息的用户
     *
     * @param deptIds
     * @return
     */
    List<AppMsgToUserDTO> selectMsgRecAvailableUsers(@Param("deptIds") List<Integer> deptIds);

    /**
     * @param :deptId
     * @Author hw
     * @Description 使用公司机构id查询用户信息
     * @Date 2020/7/30
     * @return: null
     **/
    List<SysUserDTO> selectUserByDeptId(@Param("deptIds") List<Integer> deptIds);

    /**
     * 查询客户账号列表
     *
     * @param deptIds
     * @param keyword
     * @return
     */
    List<SysUserDTO> selectCustomerUsersByParam(@Param("deptIds") List<Integer> deptIds, @Param("keyword") String keyword);

    /**
     * 查询人员详情
     *
     * @param userId
     * @return
     */
    SysUserDTO selectUserById(Integer userId);

    /**
     * 账号逻辑删除
     * (1).delFlag=1
     * (2).username添加后缀:'-del-当前时间'
     * (3).phone添加后缀:'del-当前时间'
     *
     * @param id
     */
    int deleteLogicById(@Param("id") Integer id);

    /**
     * 启用/禁用
     *
     * @param id
     * @param status
     */
    int updateStatusByUserId(@Param("id") Integer id, @Param("status") Integer status);

    /**
     * 修改密码
     *
     * @param salt
     * @param password
     * @param id
     */
    int updatePassword(@Param("salt") String salt, @Param("password") String password, @Param("id") Integer id);

    /**
     * 查询内部账号
     *
     * @return
     */
    List<SysUserDTO> selectInnerUsers(@Param("keyword") String keyword);

    /**
     * 根据guid查找用户
     *
     * @param guid guid
     * @return 用户
     */
    SysUser getUserByGuid(@Param("guid") String guid);

    List<String> selectNamePrimaryKey(@Param("ids") List<String> ids);

    List<QueryEmpSysIdDto> getAppEmpIdList(@Param("empNames") List<String> empNames);

    List<QueryEmpSysIdDto> getAppEmpEmpNamesIdList(@Param("ids") List<String> ids);

    List<QueryEmpSysIdDto> getAppEmps(@Param("empId")  Integer empId,@Param("deptId") Integer deptId);
}